package main

import "fmt"

func main() {
	//pointer()

	//emptyPointer()

	testNew()

}
func testNew()  {
	new(int)
}

func emptyPointer()  {
	var a *int
	*a = 10 //此处是空指针，会报错。可以理解为：先有值，值占了位置，才有了地址。这样直接搞一个空的指针（地址）出来，因为没有值，所以是空的，无法赋值
	println(a)

	var b map[string]int
	b["沙河娜扎"] = 100
	fmt.Println(b)
}

func pointer() {
	//指针取值
	a := 10
	b := &a // 取变量a的地址，将指针保存到b中
	fmt.Printf("type of b:%T\n", b)
	c := *b // 指针取值（根据指针去内存取值）
	d := *&a
	fmt.Printf("type of c:%T\n", c)
	fmt.Printf("value of a:%v\n", a)
	fmt.Printf("value of b:%v\n", b)
	fmt.Printf("value of c:%v\n", c)
	fmt.Printf("value of d:%v\n", d)
}
